<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Building the Tcl API</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
    <link rel="up" href="build_win.html" title="Chapter 28.  Building Berkeley DB for Windows" />
    <link rel="prev" href="build_win_csharp.html" title="Building the C# API" />
    <link rel="next" href="win_build_dist_dll.html" title="Distributing DLLs" />
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Building the Tcl API</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="build_win_csharp.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 28. 
		Building Berkeley DB for Windows
        </th>
          <td width="20%" align="right"> <a accesskey="n" href="win_build_dist_dll.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="build_win_tcl"></a>Building the Tcl API</h2>
          </div>
        </div>
      </div>
      <div class="toc">
        <dl>
          <dt>
            <span class="sect2">
              <a href="build_win_tcl.html#id1632455">Building Tcl with Visual C++ .NET or above</a>
            </span>
          </dt>
          <dt>
            <span class="sect2">
              <a href="build_win_tcl.html#id1632356">Building Tcl with Visual C++ 6.0</a>
            </span>
          </dt>
        </dl>
      </div>
      <p>Tcl support is not built automatically.  See
<a class="xref" href="tcl.html#tcl_intro" title="Loading Berkeley DB with Tcl">Loading Berkeley DB with Tcl</a> for
information on sites from which you can download Tcl and which Tcl
versions are compatible with Berkeley DB.  These notes assume that Tcl is
installed as <code class="filename">d:\tcl</code>, but you can change that if you want.</p>
      <p>The Tcl library must be built as the same build type as the Berkeley DB
library (both Release or both Debug).  We found that the binary
release of Tcl can be used with the Release configuration of Berkeley DB,
but you will need to build Tcl from sources for the Debug
configuration.  Before building Tcl, you will need to modify its
makefile to make sure that you are building a debug version, including
thread support.  This is because the set of DLLs linked into the Tcl
executable must match the corresponding set of DLLs used by Berkeley DB.</p>
      <div class="sect2" lang="en" xml:lang="en">
        <div class="titlepage">
          <div>
            <div>
              <h3 class="title"><a id="id1632455"></a>Building Tcl with Visual C++ .NET or above</h3>
            </div>
          </div>
        </div>
        <div class="orderedlist">
          <ol type="1">
            <li>Set the include directories.  Choose <span class="emphasis"><em>Tools -&gt; Options
-&gt; Projects -&gt; VC++ Directories</em></span>.  Under the "Show
directories for" pull-down, select "Include files".  Add the full
pathname for <code class="filename">d:\tcl\include</code>, then click OK.  This is the
directory that contains <code class="filename">tcl.h</code>.</li>
            <li>Set the library files directory.  Choose <span class="emphasis"><em>Tools -&gt;
Options -&gt; Projects -&gt; VC++ Directories</em></span>.  Under the "Show
directories for" pull-down, select "Library files".  Add the full
pathname for the <code class="filename">d:\tcl\lib</code> directory, then click OK.
This is the directory needed to find
<code class="filename">tcl84g.lib</code> (or whatever the
library is named in your distribution).</li>
            <li>Set the build type to Release or Debug in the drop-down on the
tool bar.</li>
            <li>
              <p>
        To build, right-click on db_tcl and select Build.  This builds the Tcl
        support library for Berkeley DB, placing the result into one of the
        following Berkeley DB subdirectories, depending upon the
        configuration that you chose:
    </p>
              <table class="simplelist" border="0" summary="Simple list">
                <tr>
                  <td>
                    <code class="filename">build_windows\Win32\Debug\libdb_tcl48d.dll</code>
                  </td>
                </tr>
                <tr>
                  <td>
                    <code class="filename">build_windows\Win32\Release\libdb_tcl48.dll</code>
                  </td>
                </tr>
              </table>
            </li>
          </ol>
        </div>
        <p>If you use a version different from Tcl 8.4.x you will
need to change the name of the Tcl library used in the build (for
example, <code class="filename">tcl84g.lib</code>) to the
appropriate name.  To do this, right click on <span class="emphasis"><em>db_tcl</em></span>, go to
<span class="emphasis"><em>Properties -&gt; Linker -&gt; Input -&gt; Additional
dependencies</em></span> and change
<code class="filename">tcl84g.lib</code> to match the Tcl
version you are using.</p>
      </div>
      <div class="sect2" lang="en" xml:lang="en">
        <div class="titlepage">
          <div>
            <div>
              <h3 class="title"><a id="id1632356"></a>Building Tcl with Visual C++ 6.0</h3>
            </div>
          </div>
        </div>
        <div class="orderedlist">
          <ol type="1">
            <li>Set the include directories.  Choose <span class="emphasis"><em>Tools -&gt; Options
-&gt; Directories</em></span>.  Under the "Show directories for" pull-down,
select "Include files".  Add the full pathname for
<code class="filename">d:\tcl\include</code>, then click OK.  This is the directory that
contains <code class="filename">tcl.h</code>.</li>
            <li>Set the library files directory.  Choose <span class="emphasis"><em>Tools -&gt;
Options -&gt; Directories</em></span>.  Under the "Show directories for"
pull-down, select "Library files".  Add the full pathname for the
<code class="filename">d:\tcl\lib</code> directory, then click OK.  This is the directory
needed to find <code class="filename">tcl84g.lib</code> (or
whatever the library is named in your distribution).</li>
            <li>Go to <span class="emphasis"><em>Build -&gt; Set Active Configuration</em></span> and select
either the Debug or Release version of the db_tcl project.  Then press
OK.</li>
            <li>
              <p>
        To build, select <span class="emphasis"><em>Build -&gt; Build
            libdb_tcl48.dll</em></span>.  This builds the Tcl support
        library for Berkeley DB, placing the result into one of the
        following Berkeley DB subdirectories, depending upon the
        configuration that you chose:
    </p>
              <table class="simplelist" border="0" summary="Simple list">
                <tr>
                  <td>
                    <code class="filename">build_windows\Win32\Debug\libdb_tcl48d.dll</code>
                  </td>
                </tr>
                <tr>
                  <td>
                    <code class="filename">build_windows\Win32\Release\libdb_tcl48.dll</code>
                  </td>
                </tr>
              </table>
            </li>
          </ol>
        </div>
        <p>If you use a version different from Tcl 8.4.x you will
need to change the name of the Tcl library used in the build (for
example, <code class="filename">tcl84g.lib</code>) to the
appropriate name.  To do this, choose
<span class="emphasis"><em>Project -&gt; Settings -&gt; db_tcl</em></span>
and change the Tcl library listed in the Object/Library modules
<code class="filename">tcl84g.lib</code> to match the Tcl version
you are using.</p>
      </div>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="build_win_csharp.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="build_win.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="win_build_dist_dll.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Building the C# API </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Distributing DLLs</td>
        </tr>
      </table>
    </div>
  </body>
</html>
